<meta charset='utf-8'>
<style>
pre{white-space:pre-wrap; word-break:break-all;}
i{color:red;}
</style>

<h1>2015年小结-技术篇</h1>
	<b>------不要因为走的太远而忘记了当初为什么出发。</b>
	<a target='_blank' href='http://firecloudphp.blog.163.com/blog/static/25082207020160191139983/#'>163blog&gt;&gt;</a><hr />
<pre>
	年末，到了总结的时刻，总结是为了看清自己，为了更好的进步。
	我的2015也是收获颇多，感慨很多。知道了很多知识点，新名词，应用场景，发展趋势，理论，方向，经历了很多经验、教训。
	我会按照知识点叙述，按照知识、名词、经验的抽象顺序展开，掺杂很多我的或对或错的看法与观点。

	知识点：先看视频入门，然后找本书读一遍，之后按照手册走一遍，最后按照常见场景，分别写代码并持续维护升级。
	框架与开源项目：计划学习thinkPHP、ci、phpMCS，看几个项目，如ecshop、dedeMCS、phpWind等。
	经验教训：写玩具代码的时候，总结经验教训。到更高水平的平台：知乎、v2ex、segmentfault、stackoverflow等。
	思想：关注23种设计模式。开始研究软件工程，否则大的项目后期会变得越来越难以扩充。
	场景：语言都有自己的场景，没有场景就没法谈优劣。所以，人是环境的产物。

<hr />[javascript]
	这一年，我学习了javascript和php，得益于之前的java SE的学习，感觉学起来快多了。很庆幸前后端一起学了，起到协同促进的作用。

	2015是个不同寻常的一年，npm超过cpan，成为这个星球上最大的包管理分发平台。标志着js的复兴或崛起。

	<b>简单即使强大。</b>
	javascript最近变化很大，标准持续更新。但是我感觉js应该保持简单，es6引入太多类java的复杂性，太重了！当我们想在浏览器端实现一个大而全的东西的时候，这个东西就死了，比如java applet，比如flash。

	
	<b>重学js</b>
	对我有限的经历来说，深感我的js功底还很差。能编写或修改js代码，但是很多不能自己手写。
	
	原型、闭包有更多的了解。可以据此构建js的'类'，实现继承等。
	
	对js的兼容性以及常用操作还是很生疏， 所以决定重温js，顺便理解加载器的概念、AMD/CMD、promise、沙箱模式、严格模式等新名词，至少对我是新的。
	下一步分别写js的常见组件：下拉菜单、焦点图、tab图、悬浮框等。预期放到github上。
	
	<b>加载器</b>
	已经写了一个loader，很粗糙，只能加载，不能解决依赖、冲突。
	
	熟练使用ajax，并用原型方法自己编写了实现ajax操作的函数。前台js使用ajax请求数据，后台返回json，前台拼装dom，刷到页面中的方式构建了几个应用（比如：正在写的进程管理系统）。感受就是，这样的代码很难维护。因为有很多构建dom的语句和函数。
		
	一句话经验：当你开始复制代码的时候，就表示你需要封装了。显示封装成函数，把常用操作抽离成一些函数，在高层次就是封装成类。
	
	所以，这种B/S架构就需要类似angularJS的前端框架，不过，我对angularJS了解不多，现列入学习计划。

	<b>nodeJS</b>
	nodeJS很火，npm的火热说明学习nodeJS很有必要。js在浏览器端无可替代的特殊性，决定着未来若干年都会是js的天下。而如果不用转化思维，直接再用js写后端岂不更美？
	
	
	
<hr />[php]
	php方面就是学习了个大概，就开始折腾，发现这样是最慢的！基础不牢地动山摇。看来应该把手册过几遍了。
	还好对java有过了解，php的OOP也就很自然了。
	
	
	<b>DawnPHPTools项目</b>
	为了收集一些常见功能，建立了一个DawnPHPTools项目，放到了github上，目前已经有20个项目了，覆盖了常见的功能：ajax, file, 验证码，二维码、pdf、计数器、分页下面的页码条、评论系统、图片缩放、jsonp、初步的ActiveRecord、自动加载、cURL、博客的标签与目录等。
	
	<b>smarty3</b>
	学习了php最著名的模板引擎smarty3，过了一遍，还不知道怎么用。看来学一个东西，最重要的是要有使用场景。
	使用smarty3的好处是分离的视图和模型，不用js的好处是：不受前端js标准变化的影响。
	
	
	<b>框架与MVC</b>

	MVC设计模式是很卓越的，我认识到的优点是：
		可扩展性强。很容易写一个方法，就扩充一个功能。
		文件组织清晰，所有的界面都在View文件夹中控制器名对一个的文件夹中，十分好找。
		据说还可以减少sql语句的数量，不过我没有理解ORM（对象关系映射）模型，没有发挥出这个的效果。
	作品方面就是txtBlog博客系统，专门管理txt格式的笔记文件的。是我自己做出来服务于自己的。使用了基本的MVC模式，但是没有好用的M，只发挥出MVC易扩展的特性。
	
	看来要学学thinkPHP之类的框架了，正在看thinkPHP，接着计划看ci3。
	
	
	
	<b>微信开发</b>
	期间接触了点微信开发，回顾腾讯很难共赢的历史，感觉微信靠不住，微信开发只能算是php的一个小方向，撑不起一个未来方向。以企鹅公司的尿性，说不定哪天微信把功能都集成到服务器上，直接踹开第三方开发者了。只试用了微信开发消息系统。微信的支付要开通服务号，认证费300元/年，目前还没有试用过。
	
	<b>php学无止境：</b>
	第一重：缓存
	memcache，smarty和tp源码都完完全全读一遍，各种库比如说gd等等的用法，，mysql复制集，分布式数据库，分布式memcache等等。
实在有毅力，把php源代码全部读一遍，或者学一下怎么开发php扩展(http://tieba.baidu.com/p/4307667728)

	第二重：常见库
	php开发者应该了解的24个库 http://tieba.baidu.com/p/4238397072
	
	第三重：用C写php扩展
	在互联网这行业工作6年了。两年客户经理，一年ASP，三年php。html，css，js，jquery，ps，fw，php，这些算非常熟练吧。会TP框架，平时建站用自己写的CMS，基于TP框架。手机站，微信二次开发，shopex二次开发，都会。明年打算最后一次跳槽，你们觉得工资多少合适。详细点的，json，xml，MySQL，flash，SASS都会呀～
	
	你应该上更高级点的地方 比如知乎 v2ex 或者segmentfault 发帖问 大家平时开发个企业站要多少天。
	
	建站公司出来的吧，服务器高并发会吗，集群技术会吗？
		个人认为从PHP的角度来说 大型项目的丰富经验才是资本 整体项目架构设计模式 都是短期无法提高的东西 至于服务器集群这一块 简单的NGNIX HAProxy 做前端负载均衡服务器 并不是很复杂的东西 有个一年经验的 基本有人教几遍就懂 至于更深层次的 类似MYSQL分布式的东西 到这基本就脱离PHP的范畴了
		
	初级的东西。（碰到大神了）
		你说哪些是高级～？
	写过php扩展吗？写过框架吗？经常用哪几种设计模式？有没有百万pv项目经验？能写简单的shell脚本吗？
	
	你这简历去中小公司还可以，去大公司估计没戏。。懂html js 什么的都不是加分项。。
	(http://tieba.baidu.com/p/4305666440)


	

<hr />[mysql]
	如果没有mysql，php就是一把折断的勺子，我相信好多phper见过这个漫画。php是最受吐槽的语言。这也彰显了mysql的重要性。
	
	mysql常见操作增删改查，命令行操作、phpMyAdmin、navicat等常见管理工具。mysql的备份、导入导出等命令。
	
	MySQL高级：触发器、存储过程、游标、事务处理、主从一致、Sharding，需要花时间了解。
	
	
<hr />[git and github]
	我想用一句话来形容git，真是太爽了！
	程序员很少给自己写代码，不过有三个还是有必要学习一下的：
		一个系统：linux
		一个编辑器：eclipse
		一个代码版本控制：git
	有了git，代码再也不用复制、粘贴、压缩、发邮件之类的备份方法了。只需要在git commit -m'这里，写清楚提交说明'。

	同时，养成了写好注释的习惯，有时候真的不是懒得写注释，是不知道怎么写。
	目前我是代码中写，同时保持一个ReadMe.txt，一个DevLog.txt文件，前者记录版本目标，后者记录每次提交的版本号及完成的功能。
	
	github上托管了很多软件，如果有需要的直接下载即可。他也确实可以作为一个优秀的下载站点。
	
<hr />[css]
	我接触css很久了，但是一直不精通，很久才能做出可用的效果。
	
	或许，真应该像一门语言一样学习css，花时间、系统学。


<hr />[bootstrap]
	编写系统的时候，知道前端的困难，有时候一个界面编写调试好久，多么希望有一个前端帮我啊，想多了。。。
	
	不过看介绍，发现bootstrap可以很快做出常见组件，快速搭建没有特色的响应式兼容IE8+的前台界面，这正是我需要的。
	
	列入学习计划。
<hr />[apache]
	会用apache配置本地虚拟域名。会用apache配置本地子域名。比如：blog.dawneve.cc。
	听说Nginx很好用，似乎我应该抽空了解一下。
	
<hr />[java]
	java放手一年了。不过eclipse编辑器还是挺好用的。
	
	准备捡起java SE，对多线程、锁、IO部分很模糊。
	
	有基础后再看java EE部分，之后ssh三大框架，以及最近流行的mavon，'Maven是基于项目对象模型(POM)，可以通过一小段描述信息来管理项目的构建，报告和文档的软件项目管理工具。'
	
	以及android部分。


<hr />[python3]
	学了一段时间，没发现python3为什么会火，估计是没有找到应用场景。
	看看能否使用python处理一些文本，貌似用php更顺手。。。虽然有30s限制，虽然也可以设置更长。
	
<hr />[新技术]
	docker、云计算等。
</pre>